/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.ebc.icontatos.model;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.OneToOne;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author linux
 */
@Entity
public class GrupoEnvio implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long idGrupoEnvio;

    private String nomeGrupoEnvio;

    @OneToOne(cascade=CascadeType.ALL)
    private FiltroGrupo filtroGrupo;

    @ManyToMany(cascade=CascadeType.MERGE)
    private List<Usuario> usuarios = new ArrayList<Usuario>();
    
    @Temporal(TemporalType.DATE)
    private Date dataCriacao = new Date();
    
    private int totalUsuarios;

	public GrupoEnvio() {
	}

	public Long getIdGrupoEnvio() {
		return idGrupoEnvio;
	}

	public void setIdGrupoEnvio(Long idGrupoEnvio) {
		this.idGrupoEnvio = idGrupoEnvio;
	}

	public String getNomeGrupoEnvio() {
		return nomeGrupoEnvio;
	}

	public void setNomeGrupoEnvio(String nomeGrupoEnvio) {
		this.nomeGrupoEnvio = nomeGrupoEnvio;
	}

	public FiltroGrupo getFiltroGrupo() {
		return filtroGrupo;
	}

	public void setFiltroGrupo(FiltroGrupo filtroGrupo) {
		this.filtroGrupo = filtroGrupo;
	}

	public List<Usuario> getUsuarios() {
		return usuarios;
	}

	public void setUsuarios(List<Usuario> usuarios) {
		this.usuarios = usuarios;
	}

	public int getTotalUsuarios() {
		return totalUsuarios;
	}

	public void setTotalUsuarios(int totalUsuarios) {
		this.totalUsuarios = totalUsuarios;
	}

	public Date getDataCriacao() {
		return dataCriacao;
	}

	public void setDataCriacao(Date dataCriacao) {
		this.dataCriacao = dataCriacao;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((filtroGrupo == null) ? 0 : filtroGrupo.hashCode());
		result = prime * result
				+ ((idGrupoEnvio == null) ? 0 : idGrupoEnvio.hashCode());
		result = prime * result
				+ ((nomeGrupoEnvio == null) ? 0 : nomeGrupoEnvio.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		GrupoEnvio other = (GrupoEnvio) obj;
		if (filtroGrupo == null) {
			if (other.filtroGrupo != null)
				return false;
		} else if (!filtroGrupo.equals(other.filtroGrupo))
			return false;
		if (idGrupoEnvio == null) {
			if (other.idGrupoEnvio != null)
				return false;
		} else if (!idGrupoEnvio.equals(other.idGrupoEnvio))
			return false;
		if (nomeGrupoEnvio == null) {
			if (other.nomeGrupoEnvio != null)
				return false;
		} else if (!nomeGrupoEnvio.equals(other.nomeGrupoEnvio))
			return false;
		return true;
	}

	@Override
	public String toString() {
		return "GrupoEnvio [idGrupoEnvio=" + idGrupoEnvio + "]";
	}
    
}
